C++ Type Traits in SFINAE
Table of Contents
1. std::enable_if_t
std::enable_if_t can pose restrictions on types. The following example only allows integers to invoke.
template<typename T, typename = std::enable_if_t<std::is_integral_v<T>>>
void foo(T value) { std::cout << value; }
The above template allows calls like foo(3) but rejects foo(3.14).